package com.ezops.poc.bo;

import org.apache.camel.dataformat.bindy.annotation.CsvRecord;
import org.apache.camel.dataformat.bindy.annotation.DataField;

@CsvRecord(separator = ",", skipFirstLine = true, generateHeaderColumns = true)
public class ClientBondFileModel extends ClientBaseTradeFileModel {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private int status;

	@DataField(pos = 1)
	private String action;

	@DataField(pos = 2)
	private String externalRefId;

	@DataField(pos = 3)
	private String internalRefId;

	@DataField(pos = 4)
	private String counterparty;

	@DataField(pos = 5)
	private String counterPartyRole;

	@DataField(pos = 6)
	private String book;

	@DataField(pos = 7)
	private String bundleType;

	@DataField(pos = 8)
	private String bundleName;

	@DataField(pos = 9)
	private String holidayCode;

	@DataField(pos = 10)
	private String currency;

	@DataField(pos = 11)
	private String tradeSettlementCurrency;

	@DataField(pos = 12)
	private String productCodeType;

	@DataField(pos = 13)
	private String productCodeValue;

	@DataField(pos = 14)
	private String nominal;

	@DataField(pos = 15)
	private String buySell;

	@DataField(pos = 16)
	private String traderName;

	@DataField(pos = 17)
	private String salesPerson;

	@DataField(pos = 18)
	private String tradeDate;

	@DataField(pos = 19)
	private String settlementDate;

	@DataField(pos = 20)
	private String negotiatedPriceType;

	@DataField(pos = 21)
	private String negotiatedPrice;

	@DataField(pos = 22)
	private String accrual;

	@DataField(pos = 23)
	private String fxRate;

	@DataField(pos = 24)
	private String templateName;

	@DataField(pos = 25)
	private String mirrorBook;

	@DataField(pos = 26)
	private String marketType;

	@DataField(pos = 27)
	private String feeType;
	@DataField(pos = 28)
	private String feeDirection;

	@DataField(pos = 29)
	private String feeAmount;

	@DataField(pos = 30)
	private String feeCcy;

	@DataField(pos = 31)
	private String feeLegalEntity;

	@DataField(pos = 32)
	private String feeStartDate;

	@DataField(pos = 33)
	private String feeEndDate;

	@DataField(pos = 34)
	private String feeKnownDate;

	@DataField(pos = 35)
	private String feeDate;

	@DataField(pos = 36)
	private String keywordLongShort;
	@DataField(pos = 37)
	private String keywordTradeSource;

	private int tradeId;

	public int getTradeId() {
		return tradeId;
	}

	public void setTradeId(int tradeId) {
		this.tradeId = tradeId;
	}

	public ClientBondFileModel() {

	}

	public String getAction() {
		return action;
	}

	public void setAction(String action) {
		this.action = action;
	}

	public String getExternalRefId() {
		return externalRefId;
	}

	public void setExternalRefId(String externalRefId) {
		this.externalRefId = externalRefId;
	}

	public String getInternalRefId() {
		return internalRefId;
	}

	public void setInternalRefId(String internalRefId) {
		this.internalRefId = internalRefId;
	}

	public String getCounterparty() {
		return counterparty;
	}

	public void setCounterparty(String counterparty) {
		this.counterparty = counterparty;
	}

	public String getCounterPartyRole() {
		return counterPartyRole;
	}

	public void setCounterPartyRole(String counterPartyRole) {
		this.counterPartyRole = counterPartyRole;
	}

	public String getBook() {
		return book;
	}

	public void setBook(String book) {
		this.book = book;
	}

	public String getBundleType() {
		return bundleType;
	}

	public void setBundleType(String bundleType) {
		this.bundleType = bundleType;
	}

	public String getBundleName() {
		return bundleName;
	}

	public void setBundleName(String bundleName) {
		this.bundleName = bundleName;
	}

	public String getHolidayCode() {
		return holidayCode;
	}

	public void setHolidayCode(String holidayCode) {
		this.holidayCode = holidayCode;
	}

	public String getCurrency() {
		return currency;
	}

	public void setCurrency(String currency) {
		this.currency = currency;
	}

	public String getTradeSettlementCurrency() {
		return tradeSettlementCurrency;
	}

	public void setTradeSettlementCurrency(String tradeSettlementCurrency) {
		this.tradeSettlementCurrency = tradeSettlementCurrency;
	}

	public String getProductCodeType() {
		return productCodeType;
	}

	public void setProductCodeType(String productCodeType) {
		this.productCodeType = productCodeType;
	}

	public String getProductCodeValue() {
		return productCodeValue;
	}

	public void setProductCodeValue(String productCodeValue) {
		this.productCodeValue = productCodeValue;
	}

	public String getNominal() {
		return nominal;
	}

	public void setNominal(String nominal) {
		this.nominal = nominal;
	}

	public String getBuySell() {
		return buySell;
	}

	public void setBuySell(String buySell) {
		this.buySell = buySell;
	}

	public String getTradeName() {
		return traderName;
	}

	public void setTradeName(String tradeName) {
		this.traderName = tradeName;
	}

	public String getSalesPerson() {
		return salesPerson;
	}

	public void setSalesPerson(String salesPerson) {
		this.salesPerson = salesPerson;
	}

	public String getTradeDate() {
		return tradeDate;
	}

	public void setTradeDate(String tradeDate) {
		this.tradeDate = tradeDate;
	}

	public String getSettlementDate() {
		return settlementDate;
	}

	public void setSettlementDate(String settlementDate) {
		this.settlementDate = settlementDate;
	}

	public String getNegotiatedPriceType() {
		return negotiatedPriceType;
	}

	public void setNegotiatedPriceType(String negotiatedPriceType) {
		this.negotiatedPriceType = negotiatedPriceType;
	}

	public String getNegotiatedPrice() {
		return negotiatedPrice;
	}

	public void setNegotiatedPrice(String negotiatedPrice) {
		this.negotiatedPrice = negotiatedPrice;
	}

	public String getAccrual() {
		return accrual;
	}

	public void setAccrual(String accrual) {
		this.accrual = accrual;
	}

	public String getFxRate() {
		return fxRate;
	}

	public void setFxRate(String fxRate) {
		this.fxRate = fxRate;
	}

	public String getTemplateName() {
		return templateName;
	}

	public void setTemplateName(String templateName) {
		this.templateName = templateName;
	}

	public String getMirrorBook() {
		return mirrorBook;
	}

	public void setMirrorBook(String mirrorBook) {
		this.mirrorBook = mirrorBook;
	}

	public String getMarketType() {
		return marketType;
	}

	public void setMarketType(String marketType) {
		this.marketType = marketType;
	}

	public String getFeeType() {
		return feeType;
	}

	public void setFeeType(String feeType) {
		this.feeType = feeType;
	}

	public String getFeeDirection() {
		return feeDirection;
	}

	public void setFeeDirection(String feeDirection) {
		this.feeDirection = feeDirection;
	}

	public String getFeeAmount() {
		return feeAmount;
	}

	public void setFeeAmount(String feeAmount) {
		this.feeAmount = feeAmount;
	}

	public String getFeeCcy() {
		return feeCcy;
	}

	public void setFeeCcy(String feeCcy) {
		this.feeCcy = feeCcy;
	}

	public String getFeeLegalEntity() {
		return feeLegalEntity;
	}

	public void setFeeLegalEntity(String feeLegalEntity) {
		this.feeLegalEntity = feeLegalEntity;
	}

	public String getFeeStartDate() {
		return feeStartDate;
	}

	public void setFeeStartDate(String feeStartDate) {
		this.feeStartDate = feeStartDate;
	}

	public String getFeeEndDate() {
		return feeEndDate;
	}

	public void setFeeEndDate(String feeEndDate) {
		this.feeEndDate = feeEndDate;
	}

	public String getFeeKnownDate() {
		return feeKnownDate;
	}

	public void setFeeKnownDate(String feeKnownDate) {
		this.feeKnownDate = feeKnownDate;
	}

	public String getFeeDate() {
		return feeDate;
	}

	public void setFeeDate(String feeDate) {
		this.feeDate = feeDate;
	}

	public String getKeywordLongShort() {
		return keywordLongShort;
	}

	public void setKeywordLongShort(String keywordLongShort) {
		this.keywordLongShort = keywordLongShort;
	}

	public String getKeywordTradeSource() {
		return keywordTradeSource;
	}

	public void setKeywordTradeSource(String keywordTradeSource) {
		this.keywordTradeSource = keywordTradeSource;
	}

	public String getTraderName() {
		return traderName;
	}

	public void setTraderName(String traderName) {
		this.traderName = traderName;
	}

	public int getStatus() {
		return status;
	}

	public void setStatus(int status) {
		this.status = status;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((accrual == null) ? 0 : accrual.hashCode());
		result = prime * result + ((action == null) ? 0 : action.hashCode());
		result = prime * result + ((book == null) ? 0 : book.hashCode());
		result = prime * result
				+ ((bundleName == null) ? 0 : bundleName.hashCode());
		result = prime * result
				+ ((bundleType == null) ? 0 : bundleType.hashCode());
		result = prime * result + ((buySell == null) ? 0 : buySell.hashCode());
		result = prime
				* result
				+ ((counterPartyRole == null) ? 0 : counterPartyRole.hashCode());
		result = prime * result
				+ ((counterparty == null) ? 0 : counterparty.hashCode());
		result = prime * result
				+ ((currency == null) ? 0 : currency.hashCode());
		result = prime * result
				+ ((externalRefId == null) ? 0 : externalRefId.hashCode());
		result = prime * result
				+ ((feeAmount == null) ? 0 : feeAmount.hashCode());
		result = prime * result + ((feeCcy == null) ? 0 : feeCcy.hashCode());
		result = prime * result + ((feeDate == null) ? 0 : feeDate.hashCode());
		result = prime * result
				+ ((feeDirection == null) ? 0 : feeDirection.hashCode());
		result = prime * result
				+ ((feeEndDate == null) ? 0 : feeEndDate.hashCode());
		result = prime * result
				+ ((feeKnownDate == null) ? 0 : feeKnownDate.hashCode());
		result = prime * result
				+ ((feeLegalEntity == null) ? 0 : feeLegalEntity.hashCode());
		result = prime * result
				+ ((feeStartDate == null) ? 0 : feeStartDate.hashCode());
		result = prime * result + ((feeType == null) ? 0 : feeType.hashCode());
		result = prime * result + ((fxRate == null) ? 0 : fxRate.hashCode());
		result = prime * result
				+ ((holidayCode == null) ? 0 : holidayCode.hashCode());
		result = prime * result
				+ ((internalRefId == null) ? 0 : internalRefId.hashCode());
		result = prime
				* result
				+ ((keywordLongShort == null) ? 0 : keywordLongShort.hashCode());
		result = prime
				* result
				+ ((keywordTradeSource == null) ? 0 : keywordTradeSource
						.hashCode());
		result = prime * result
				+ ((marketType == null) ? 0 : marketType.hashCode());
		result = prime * result
				+ ((mirrorBook == null) ? 0 : mirrorBook.hashCode());
		result = prime * result
				+ ((negotiatedPrice == null) ? 0 : negotiatedPrice.hashCode());
		result = prime
				* result
				+ ((negotiatedPriceType == null) ? 0 : negotiatedPriceType
						.hashCode());
		result = prime * result + ((nominal == null) ? 0 : nominal.hashCode());
		result = prime * result
				+ ((productCodeType == null) ? 0 : productCodeType.hashCode());
		result = prime
				* result
				+ ((productCodeValue == null) ? 0 : productCodeValue.hashCode());
		result = prime * result
				+ ((salesPerson == null) ? 0 : salesPerson.hashCode());
		result = prime * result
				+ ((settlementDate == null) ? 0 : settlementDate.hashCode());
		result = prime * result
				+ ((templateName == null) ? 0 : templateName.hashCode());
		result = prime * result
				+ ((tradeDate == null) ? 0 : tradeDate.hashCode());
		result = prime * result
				+ ((traderName == null) ? 0 : traderName.hashCode());
		result = prime
				* result
				+ ((tradeSettlementCurrency == null) ? 0
						: tradeSettlementCurrency.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		ClientBondFileModel other = (ClientBondFileModel) obj;
		if (accrual == null) {
			if (other.accrual != null)
				return false;
		} else if (!accrual.equals(other.accrual))
			return false;
		if (action == null) {
			if (other.action != null)
				return false;
		} else if (!action.equals(other.action))
			return false;
		if (book == null) {
			if (other.book != null)
				return false;
		} else if (!book.equals(other.book))
			return false;
		if (bundleName == null) {
			if (other.bundleName != null)
				return false;
		} else if (!bundleName.equals(other.bundleName))
			return false;
		if (bundleType == null) {
			if (other.bundleType != null)
				return false;
		} else if (!bundleType.equals(other.bundleType))
			return false;
		if (buySell == null) {
			if (other.buySell != null)
				return false;
		} else if (!buySell.equals(other.buySell))
			return false;
		if (counterPartyRole == null) {
			if (other.counterPartyRole != null)
				return false;
		} else if (!counterPartyRole.equals(other.counterPartyRole))
			return false;
		if (counterparty == null) {
			if (other.counterparty != null)
				return false;
		} else if (!counterparty.equals(other.counterparty))
			return false;
		if (currency == null) {
			if (other.currency != null)
				return false;
		} else if (!currency.equals(other.currency))
			return false;
		if (externalRefId == null) {
			if (other.externalRefId != null)
				return false;
		} else if (!externalRefId.equals(other.externalRefId))
			return false;
		if (feeAmount == null) {
			if (other.feeAmount != null)
				return false;
		} else if (!feeAmount.equals(other.feeAmount))
			return false;
		if (feeCcy == null) {
			if (other.feeCcy != null)
				return false;
		} else if (!feeCcy.equals(other.feeCcy))
			return false;
		if (feeDate == null) {
			if (other.feeDate != null)
				return false;
		} else if (!feeDate.equals(other.feeDate))
			return false;
		if (feeDirection == null) {
			if (other.feeDirection != null)
				return false;
		} else if (!feeDirection.equals(other.feeDirection))
			return false;
		if (feeEndDate == null) {
			if (other.feeEndDate != null)
				return false;
		} else if (!feeEndDate.equals(other.feeEndDate))
			return false;
		if (feeKnownDate == null) {
			if (other.feeKnownDate != null)
				return false;
		} else if (!feeKnownDate.equals(other.feeKnownDate))
			return false;
		if (feeLegalEntity == null) {
			if (other.feeLegalEntity != null)
				return false;
		} else if (!feeLegalEntity.equals(other.feeLegalEntity))
			return false;
		if (feeStartDate == null) {
			if (other.feeStartDate != null)
				return false;
		} else if (!feeStartDate.equals(other.feeStartDate))
			return false;
		if (feeType == null) {
			if (other.feeType != null)
				return false;
		} else if (!feeType.equals(other.feeType))
			return false;
		if (fxRate == null) {
			if (other.fxRate != null)
				return false;
		} else if (!fxRate.equals(other.fxRate))
			return false;
		if (holidayCode == null) {
			if (other.holidayCode != null)
				return false;
		} else if (!holidayCode.equals(other.holidayCode))
			return false;
		if (internalRefId == null) {
			if (other.internalRefId != null)
				return false;
		} else if (!internalRefId.equals(other.internalRefId))
			return false;
		if (keywordLongShort == null) {
			if (other.keywordLongShort != null)
				return false;
		} else if (!keywordLongShort.equals(other.keywordLongShort))
			return false;
		if (keywordTradeSource == null) {
			if (other.keywordTradeSource != null)
				return false;
		} else if (!keywordTradeSource.equals(other.keywordTradeSource))
			return false;
		if (marketType == null) {
			if (other.marketType != null)
				return false;
		} else if (!marketType.equals(other.marketType))
			return false;
		if (mirrorBook == null) {
			if (other.mirrorBook != null)
				return false;
		} else if (!mirrorBook.equals(other.mirrorBook))
			return false;
		if (negotiatedPrice == null) {
			if (other.negotiatedPrice != null)
				return false;
		} else if (!negotiatedPrice.equals(other.negotiatedPrice))
			return false;
		if (negotiatedPriceType == null) {
			if (other.negotiatedPriceType != null)
				return false;
		} else if (!negotiatedPriceType.equals(other.negotiatedPriceType))
			return false;
		if (nominal == null) {
			if (other.nominal != null)
				return false;
		} else if (!nominal.equals(other.nominal))
			return false;
		if (productCodeType == null) {
			if (other.productCodeType != null)
				return false;
		} else if (!productCodeType.equals(other.productCodeType))
			return false;
		if (productCodeValue == null) {
			if (other.productCodeValue != null)
				return false;
		} else if (!productCodeValue.equals(other.productCodeValue))
			return false;
		if (salesPerson == null) {
			if (other.salesPerson != null)
				return false;
		} else if (!salesPerson.equals(other.salesPerson))
			return false;
		if (settlementDate == null) {
			if (other.settlementDate != null)
				return false;
		} else if (!settlementDate.equals(other.settlementDate))
			return false;
		if (templateName == null) {
			if (other.templateName != null)
				return false;
		} else if (!templateName.equals(other.templateName))
			return false;
		if (tradeDate == null) {
			if (other.tradeDate != null)
				return false;
		} else if (!tradeDate.equals(other.tradeDate))
			return false;
		if (traderName == null) {
			if (other.traderName != null)
				return false;
		} else if (!traderName.equals(other.traderName))
			return false;
		if (tradeSettlementCurrency == null) {
			if (other.tradeSettlementCurrency != null)
				return false;
		} else if (!tradeSettlementCurrency
				.equals(other.tradeSettlementCurrency))
			return false;
		return true;
	}

}
